--- /dev/null
+#include <gtk/gtk.h>
+
+static void
+split_decorations (GObject *obj,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ GtkBuilder *builder = data;
+ GtkWidget *sheader, *mheader;
+ gchar *layout, *p1, *p2;
+ gchar **p;
+
+ sheader = gtk_builder_get_object (builder, "sidebar-header");
+ mheader = gtk_builder_get_object (builder, "main-header");
+
+ g_object_get (obj, "gtk-decoration-layout", &layout, NULL);
+
+ p = g_strsplit (layout, ":", -1);
+
+ p1 = g_strconcat (p[0], ":", NULL);
+ p2 = g_strconcat (":", p[1], NULL);
+
+ gtk_header_bar_set_decoration_layout (GTK_HEADER_BAR (sheader), p1);
+ gtk_header_bar_set_decoration_layout (GTK_HEADER_BAR (mheader), p2);
+
+ g_free (p1);
+ g_free (p2);
+ g_strfreev (p);
+ g_free (layout);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkBuilder *builder;
+ GtkSettings *settings;
+ GtkWidget *win;
+ GtkWidget *entry;
+ GtkWidget *check;
+ GtkWidget *header;
+
+ gtk_init (NULL, NULL);
+
+ builder = gtk_builder_new_from_file ("testsplitheaders.ui");
+
+ win = gtk_builder_get_object (builder, "window");
+ settings = gtk_widget_get_settings (win);
+
+ g_signal_connect (settings, "notify::gtk-decoration-layout",
+ G_CALLBACK (split_decorations), builder);
+ split_decorations (settings, NULL, builder);
+
+ entry = gtk_builder_get_object (builder, "layout-entry");
+ g_object_bind_property (settings, "gtk-decoration-layout",
+ entry, "text",
+ G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE);
+ check = gtk_builder_get_object (builder, "decorations");
+ header = gtk_builder_get_object (builder, "sidebar-header");
+ g_object_bind_property (check, "active",
+ header, "show-close-button",
+ G_BINDING_DEFAULT);
+ header = gtk_builder_get_object (builder, "main-header");
+ g_object_bind_property (check, "active",
+ header, "show-close-button",
+ G_BINDING_DEFAULT);
+ gtk_window_present (GTK_WINDOW (win));
+
+ gtk_main ();
+
+ return 0;
+}
--- /dev/null
+<interface>
+ <object class="GtkWindow" id="window">
+ <property name="default-width">600</property>
+ <property name="default-height">400</property>
+ <property name="icon-name">preferences-desktop-font</property>
+ <child type="titlebar">
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkHeaderBar" id="sidebar-header">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="visible">True</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="pack-type">end</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkHeaderBar" id="main-header">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="label"><</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="label">></property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack-type">start</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkListBox" id="sidebar-content">
+ <property name="visible">True</property>
+ <property name="selection-mode">none</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Bla</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Bla bla</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Bla bla bla</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Bla bla bla bla</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="main-content">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">always</property>
+ <property name="vscrollbar-policy">always</property>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="margin">20</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Layout</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="layout-entry">
+ <property name="visible">True</property>
+ <property name="width-chars">25</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label">Decorations</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="decorations">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">horizontal</property>
+ <widgets>
+ <widget name="sidebar-header"/>
+ <widget name="sidebar-content"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup">
+ <property name="mode">horizontal</property>
+ <widgets>
+ <widget name="main-header"/>
+ <widget name="main-content"/>
+ </widgets>
+ </object>
+</interface>